/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Beans;

import Banco.Classes.Aluno;
import Banco.Classes.Turma;
import Banco.DAO.DestinoDAO;
import Banco.DAO.MensagensDAO;
import enviosms.Destino;
import java.util.ArrayList;
import enviosms.Mensagem;

/**
 *
 * @author organoz
 */
public class MensagensBean {

    private ArrayList<Destino> dest;
    private DestinoDAO ddao;
    private Mensagem msg;
    private ArrayList<Aluno> alunos;
    private ArrayList<Aluno> destinos;
    private Turma turminha;
    private String remetente;
    private String mensagem;
    private String error = null;

    /**
     * Retorna o texto da mensagem a qual foi associada ao Bean
     *
     * @return corpo da mensagem
     */
    public String getMensagem() {
        return mensagem;
    }

    /**
     * Atribui valor ao texto da mensagem associada ao Bean
     *
     * @param mensagem - corpo da mensagem
     */
    public void setMensagem(String mensagem) {
        this.mensagem = mensagem;
    }

    /**
     * Retorna o remetente da mensagem
     *
     * @return remetente da mensagem
     */
    public String getRemetente() {
        return remetente;
    }

    /**
     * Atribui valor ao remetente da mensagem
     *
     * @param remetente - remetente da mensagem
     */
    public void setRemetente(String remetente) {
        this.remetente = remetente;
    }

    /**
     * Retorna a lista de alunos associados ao Bean
     *
     * @return arraylist com alunos tidos como destinos da mensagem
     */
    public ArrayList<Aluno> getAlunos() {
        return alunos;
    }

    /**
     * Atribui valores aos alunos associados ao Bean
     *
     * @param alunos - arraylist com alunos tidos como destinos da mensagem
     */
    public void setAlunos(ArrayList<Aluno> alunos) {
        this.alunos = alunos;
    }

    /**
     * Retorna o atributo turminha do Bean
     *
     * @return turma a qual está associada a mensagem
     */
    public Turma getTurminha() {
        return turminha;
    }

    /**
     * Atribui valor ao atributo turminha do Bean
     *
     * @param turminha - turma a qual está associada a mensagem
     */
    public void setTurminha(Turma turminha) {
        this.turminha = turminha;
    }

    public MensagensBean() {
        dest = new ArrayList<Destino>();
        ddao = new DestinoDAO();
        msg = new Mensagem();
        destinos = new ArrayList<Aluno>();
    }

    /**
     * Retorna o atributo mensagem do Bean
     *
     * @return atributo que representa a entidade mensagem
     */
    public Mensagem getMsg() {
        return msg;
    }

    /**
     * Atribui valor ao atributo mensagem do Bean
     *
     * @param msg - atributo que representa a entidade mensagem
     */
    public void setMsg(Mensagem msg) {
        this.msg = msg;
    }

    /**
     * Retorna o atributo DestinoDAO associado ao Bean
     *
     * @return objeto de comunicação/obtenção de destinos do banco de dados
     */
    public DestinoDAO getdDAO() {
        return ddao;
    }

    /**
     * Atribui valor atributo DestinoDAO do Bean
     *
     * @param ddao - objeto de comunicação/obtenção de destinos do banco de dados
     */
    public void setdDAO(DestinoDAO dDAO) {
        this.ddao = dDAO;
    }

    /**
     * Retorna a lista de destinos associados à mensagem
     *
     * @return lista de destinos associados à mensagem
     */
    public ArrayList<Destino> getDest() {
        return dest;
    }

    /**
     * Atribui valor á lista de destinos da mensagem
     *
     * @param dest - lista de destinos associados à mensagem
     */
    public void setDest(ArrayList<Destino> dest) {
        this.dest = dest;
    }

    /**
     * Retorna a lista de alunos que compõe os destinos da mensagem
     *
     * @return arraylist de alunos que serão os destinos
     */
    public ArrayList<Aluno> getDestinos() {
        return destinos;
    }

    /**
     * Atribui valor à lista de alunos que compõe os destinos da mensagem
     *
     * @param destinos - arraylist de valores para os destinos
     */
    public void setDestinos(ArrayList<Aluno> destinos) {
        this.destinos = destinos;
    }



    /**
     * Método responsável pelo envio da mensagem, além de retornar uma string para navegação entre páginas
     *
     * @return String usada para navegação para a página de confirmação de envio
     */
    public String envia() {
        DestinoDAO Ddao = new DestinoDAO();
        MensagensDAO mDAO = new MensagensDAO();

        ArrayList<Destino> arrayD = new ArrayList<Destino>();

        //seta o atributos referentes a msg vindos da página
        msg.setRemetente(this.remetente);
        msg.setTurma_cursoFK(this.turminha.getCurso());
        msg.setTurma_disciplinaFK(this.turminha.getDisciplina());
        msg.setTurma_periodoFK(this.turminha.getPeriodo());
        msg.setTurma_turmaFK(this.turminha.getTurma());



         


        if (destinos.size() == 1) {
            String nomeALuno = destinos.get(0).getNome();
            String celAluno = destinos.get(0).getCelular();

            //cria o Destino setando os atributos independentes do Banco
            Destino destino = new Destino(nomeALuno, celAluno, msg);

            try {
                //salva o destino no Banco
                Ddao.inserirDestino(destino);
            } catch (Exception ex) {
                System.out.println("n inseriu");
            }
            //envia a mensagem
           // mensagem = Sms.getInstance().enviarMensagemIndividual(destino);

            if (destino.getStatus()) {
                //salva o destino no Banco
                ddao.atulizaStatusDestino(destino.getId_Destino());
            }

        } else if (destinos.size() > 1) {
            for (int i = 0; i < destinos.size(); i++) {
                String nomeALuno = destinos.get(0).getNome();
                String celAluno = destinos.get(0).getCelular();

                //cria o Destino setando os atributos independentes do Banco
                Destino dest = new Destino(nomeALuno, celAluno, msg);
                //adiciona no ArrayList todos os destinos
                arrayD.add(dest);
                try {
                    //salva o destino no Banco
                    Ddao.inserirDestino(dest);
                } catch (Exception ex) {
                    System.out.println("n inseriu");
                }
            }
            //envia as mensagens
         //   mensagem = Sms.getInstance().enviarMensagemGrupo(arrayD);

            for (int i = 0; i < arrayD.size(); i++) {
                if (arrayD.get(i).getStatus()) {
                    ddao.atulizaStatusDestino(arrayD.get(i).getId_Destino());
                }
            }




        }

        try {
            mDAO.insertMensagem(msg);
        } catch (Exception ex) {
            System.out.println("n salvou mensagem");
        }


        return "string";
        
    }


    /**
     * Retorna uma String de navegação entre páginas
     *
     * @return String usada para a navegação para página de index
     */
    public String index() {
        return "index";
    }

    /**
     * Método que indica a existência de erro ao enviar mensagem
     *
     * @return string para retorno à página de escrever mensagem
     */
    public String erro(){
        return "errormsg";
    }

}
